// 
// Copyright 2010 Classpath Pty Ltd <opensource@classpath.com.au>
// 
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// 
//     http://www.apache.org/licenses/LICENSE-2.0
// 
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// 

**
** Represents the ability to execute arbitrary SQL from within a migration.
**
mixin CanExecuteSql : HasModifications {

    **
    ** Creates a `ExecutedSql` based on the specified statement and stores it in the created SQLs being tracked by the mixed in class.
    **
    ExecutedSql executeSql(Str sql) {
        Pod.of(this).log.debug("${typeof}.executeSql(${sql}) - start")
        executed := ExecutedSql(sql)
        modifications.add(executed)
        Pod.of(this).log.debug("${typeof}.executeSql(${sql}) - end - returning ${executed}")
        return executed
    }

}
